﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using QLCG.DAO;
using Utils;
using Utils.DatabaseUtils;

namespace QuanLyChuyenGia.Controls
{
    public class clData
    {
        public static string[] Provine = new string[] { "Hậu Giang", "Đắk Lắc", "Đắk Nông", "Điện Biên", "Hà Nội", "TP Hồ Chí Minh", "Đà Nẵng", "Nha Trang", "Hải Phòng", "Bắc Giang", "Bạc Liêu", "Vũng Tàu", "Bắc Cạn", "Bắc Ninh", "Quảng Ninh", "Bến Tre", "Cần Thơ", "Bình Dương", "Bình Định", "Bình Phước", "Bình Thuận", "Cà Mau", "Cao Bằng", "Đồng Nai", "Đồng Tháp", "Gia Lai", "Hà Giang", "Hà Nam", "Hà Tây", "Hà Tĩnh", "Hải Dương", "Hưng Yên", "Khánh Hòa", "Kiên Giang", "Kon Tum", "Lai Châu", "Lạng Sơn", "Lào Cai", "Lâm Đồng", "Long An", "Nam Định", "Nghệ An", "Ninh Bình", "Ninh Thuận", "Phú Thọ", "Phú Yên", "Quảng Bình", "Quảng Nam", "Quảng Ngãi", "Quang Nam", "Quảng Trị", "Sóc Trăng", "Sơn La", "Tây Ninh", "Thái Bình", "Thái Nguyên", "Thanh Hóa", "Thừa Thiên Huế", "Tiền Giang", "Trà Vinh", "Tuyên Quang", "Vĩnh Long", "Vĩnh Phúc", "An Giang", "Yên Bái"  };

        public enum PHAN_QUYEN { KHONG_CO = 0, XEM = 2, THEM = 4, SUA = 8, XOA = 16, BAO_CAO = 32, TAT_CA = 62 };


        #region Quan Ly Ban Hang

        private static QLBH.NguoiDung nguoiDung;

        public static QLBH.NguoiDung _NguoiDung
        {
            get { return clData.nguoiDung; }
            set { clData.nguoiDung = value; }
        }

        private static DataTable dtSanPham;

        public static DataTable DtSanPham
        {
            get { return clData.dtSanPham; }
            set { clData.dtSanPham = value; }
        }

        private static DataTable dtDonViTinh;

        public static DataTable DtDonViTinh
        {
            get { return clData.dtDonViTinh; }
            set { clData.dtDonViTinh = value; }
        }

        private static DataTable dtDanhMuc;

        public static DataTable DtDanhMuc
        {
            get { return clData.dtDanhMuc; }
            set { clData.dtDanhMuc = value; }
        }

        private static DataSet chucNang;

        public static DataSet ChucNang
        {
            get { return clData.chucNang; }
            set { clData.chucNang = value; }
        }

        private static DataTable dtNhaCungCap;

        public static DataTable DtNhaCungCap
        {
            get { return clData.dtNhaCungCap; }
            set { clData.dtNhaCungCap = value; }
        }

        private static DataTable dtCaLamViec;

        public static DataTable DtCaLamViec
        {
            get { return clData.dtCaLamViec; }
            set { clData.dtCaLamViec = value; }
        }

        private static DataTable dtNhomQuyen;

        public static DataTable DtNhomQuyen
        {
            get { return clData.dtNhomQuyen; }
            set { clData.dtNhomQuyen = value; }
        }

        private static DataTable dtNguoiDung;

        public static DataTable DtNguoiDung
        {
            get { return clData.dtNguoiDung; }
            set { clData.dtNguoiDung = value; }
        }

        private static DataTable dtDoiTac;

        public static DataTable DtDoiTac
        {
            get { return clData.dtDoiTac; }
            set { clData.dtDoiTac = value; }
        }

        private static DataTable dtBoPhan;

        public static DataTable DtBoPhan
        {
            get { return clData.dtBoPhan; }
            set { clData.dtBoPhan = value; }
        }

        private static DataTable dtCaLamViec_NguoiDung;

        public static DataTable DtCaLamViec_NguoiDung
        {
            get { return clData.dtCaLamViec_NguoiDung; }
            set { clData.dtCaLamViec_NguoiDung = value; }
        }

        private static DataTable dtCuaHang;

        public static DataTable DtCuaHang
        {
            get { return clData.dtCuaHang; }
            set { clData.dtCuaHang = value; }
        }

        private static DataTable dtKhoHang;

        public static DataTable DtKhoHang
        {
            get { return clData.dtKhoHang; }
            set { clData.dtKhoHang = value; }
        }

        private static DataTable dtPhanQuyen;

        public static DataTable DtPhanQuyen
        {
            get { return clData.dtPhanQuyen; }
            set { clData.dtPhanQuyen = value; }
        }

        private static DataTable dtKhachHang;

        public static DataTable DtKhachHang
        {
            get { return clData.dtKhachHang; }
            set { clData.dtKhachHang = value; }
        }

        #endregion

        private static DataSet dtChuyenGia;

        public static DataSet DtChuyenGia
        {
            get { return clData.dtChuyenGia; }
            set { clData.dtChuyenGia = value; }
        }

        private static DataTable dtCongViec;

        public static DataTable DtCongViec
        {
            get { return clData.dtCongViec; }
            set { clData.dtCongViec = value; }
        }
        private static DataTable dtChuyenMon;

        public static DataTable DtChuyenMon
        {
            get { return clData.dtChuyenMon; }
            set { clData.dtChuyenMon = value; }
        }
        private static DataTable dtLinhVuc;

        public static DataTable DtLinhVuc
        {
            get { return clData.dtLinhVuc; }
            set { clData.dtLinhVuc = value; }
        }
        private static DataTable dtTieuLinhVuc;

        public static DataTable DtTieuLinhVuc
        {
            get { return clData.dtTieuLinhVuc; }
            set { clData.dtTieuLinhVuc = value; }
        }

        public static bool ExportData(string fileName)
        {
            int result = SqlHelper.ExecuteNonQuery(Common.Conn, CommandType.Text, @"backup database QLCG to disk ='" + fileName + "' with init,stats=10");
            return true;
        }

        public static bool ImportData(string fileName)
        {
            try
            {
                string conn = Common.Conn.Replace("QLCG", "master");
                try
                {
                    SqlHelper.ExecuteNonQuery(conn, CommandType.Text, @"alter database QLCG set offline with rollback immediate");
                }
                catch (Exception ex2)
                {
                }
                int result = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, @"restore  database QLCG from disk ='" + fileName + "'");

                try
                {
                    SqlConnection.ClearAllPools();
                }
                catch (Exception ex)
                {
                }
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }


        public static void ProcessDataOfCaLamViec()
        {
            DtCaLamViec.Columns.Add("ThoiGianLamViec");
            foreach (DataRow item in clData.DtCaLamViec.Rows)
            {
                item["ThoiGianLamViec"] = item["GioBatDauLamViec"] + " - " + item["GioKetThucLamViec"];
            }
        }

        public static void ProcessDataOfCaLamViec_NguoiDung()
        {
            DtCaLamViec_NguoiDung.Columns.Add("ThoiGianLamViec");
            DtCaLamViec_NguoiDung.Columns.Add("CacNgayLamViec");
            ArrayList arrDays = null;
            foreach (DataRow item in clData.DtCaLamViec_NguoiDung.Rows)
            {
                item["ThoiGianLamViec"] = item["GioBatDauLamViec"] + " - " + item["GioKetThucLamViec"];
                int i = 0;
                arrDays = new ArrayList();
                byte result = (byte)item["NgayLamViec"];
                string str = "";
                if ((result & (byte)QuanLyBanHang.Days.Day.CHU_NHAT) > 0)
                {
                    arrDays.Add("Chủ nhật");
                    i++;
                }
                if ((result & (byte)QuanLyBanHang.Days.Day.THU_HAI) > 0)
                {
                    arrDays.Add("Thứ 2");
                    i++;
                }

                if ((result & (byte)QuanLyBanHang.Days.Day.THU_BA) > 0)
                {
                    arrDays.Add("Thứ 3");
                    i++;
                }

                if ((result & (byte)QuanLyBanHang.Days.Day.THU_TU) > 0)
                {
                    arrDays.Add("Thứ 4");
                    i++;
                }

                if ((result & (byte)QuanLyBanHang.Days.Day.THU_NAM) > 0)
                {
                    arrDays.Add("Thứ 5");
                    i++;
                }

                if ((result & (byte)QuanLyBanHang.Days.Day.THU_SAU) > 0)
                {
                    arrDays.Add("Thứ 6");
                    i++;
                }
                if ((result & (byte)QuanLyBanHang.Days.Day.THU_BAY) > 0)
                {
                    arrDays.Add("Thứ 7");
                    i++;
                }
                foreach (string itemDay in arrDays)
                {
                    if (i == 0)
                    {
                        str += itemDay;
                    }
                    else
                    {
                        if (i != 1)
                        {
                            str += itemDay + ", ";
                        }
                        else
                        {
                            str += itemDay;
                        }
                        i--;
                    }
                }
                item["CacNgayLamViec"] = str;
            }    
        }

        public static void ProcessDataOfSanPham()
        {
            DtSanPham.Columns.Add("SoLuongSanPham");
            foreach (DataRow item in clData.DtSanPham.Rows)
            {
                item["SoLuongSanPham"] = item["TonKhoToiThieu"] + "" + item["KyHieu"];
            }
        }
    }
}
